import Vue from 'vue'
/* 获取当前通话用户id */
export function getCurExternalContact() {
  return new Promise((resolve, reject) => {
    wx.invoke('getCurExternalContact', {}, function (res) {
      if (res.err_msg == 'getCurExternalContact:ok') {
        // window.sessionStorage.setItem("userId", res.userId);
        uni.setStorageSync('clientId', res.userId)
        resolve(res.userId)
      } else {
        reject(res)
        console.log(res)
      }
    })
  })
}
/** 获取当前群聊ID */
const getCurExternalChat = () => {
  return new Promise((resolve, reject) => {
    wx.invoke('getCurExternalChat', {}, function (res) {
      if (res.err_msg == 'getCurExternalChat:ok') {
        window.sessionStorage.setItem('chatId', res.chatId) //返回当前客户群的群聊ID
        resolve(res.chatId)
      } else {
        //错误处理
        reject(res)
      }
    })
  })
}
/** 初始化js sdk */
export function invokeWX(data, agentObj, that) {
  console.log(data)
  console.log(agentObj)
  return new Promise((resolve, reject) => {
    const wxConfig = {
      beta: true, // 必须这么写，否则wx.invoke调用形式的jsapi会有问题
      debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
      appId: data.appId, // 必填，企业微信的corpID
      timestamp: data.timestamp.toString(), // 必填，生成签名的时间戳
      nonceStr: data.noncestr, // 必填，生成签名的随机串
      signature: data.signature, // 必填，签名，见附录1
      jsApiList: ['agentConfig'], // 必填，需要使用的JS接口列表，凡是要调用的接口都需要传进来
    }
    const agentConfig = {
      corpid: agentObj.corpid, // 必填，企业微信的corpid，必须与当前登录的企业一致
      agentid: agentObj.agentid, // 必填，企业微信的应用id
      timestamp: agentObj.timestamp.toString(), // 必填，企业微信的corpid，必须与当前登录的企业一致
      nonceStr: agentObj.noncestr, // 必填，企业微信的corpid，必须与当前登录的企业一致
      signature: agentObj.signature, // 必填，企业微信的corpid，必须与当前登录的企业一致
    }

    wx.config(wxConfig)
    wx.ready(function () {
      console.log('ready')
      wx.agentConfig({
        corpid: agentObj.corpid, // 必填，企业微信的corpid，必须与当前登录的企业一致
        agentid: agentObj.agentid, // 必填，企业微信的应用id
        timestamp: agentObj.timestamp.toString(), // 必填，企业微信的corpid，必须与当前登录的企业一致
        nonceStr: agentObj.noncestr, // 必填，企业微信的corpid，必须与当前登录的企业一致
        signature: agentObj.signature, // 必填，企业微信的corpid，必须与当前登录的企业一致
        jsApiList: [
          'getCurExternalContact',
          'selectExternalContact',
          'sendChatMessage',
          'getCurExternalChat',
          'getContext',
          'openEnterpriseChat',
        ], // 必填
        success: function (res) {
          console.log(res)

          resolve(1)
          // 判断入口来源
          // Vue.$customWx.invoke('getContext', {}, async function (res) {
          //     if (res.err_msg == "getContext:ok") {
          //         //返回进入H5页面的入口类型，目前有normal、contact_profile、single_chat_tools、group_chat_tools
          //         if (res.entry === "single_chat_tools") {
          //             //获取当前外部联系人userId
          //             resolve(await getCurExternalContact())
          //         }
          //         if (res.entry === "group_chat_tools") {
          //             const pages = getCurrentPages();
          //             const route = pages[pages.length - 1].route;
          //             if (route !== "pages/groupDetail/index") {
          //                 const query = window.location.href.split('?')[1]
          //                 uni.navigateTo({
          //                     url: '/pages/groupDetail/index?' + query
          //                 });
          //                 reject("从群聊工具页进来");
          //             } else {
          //                 // 获取群聊ID
          //                 resolve(await getCurExternalChat())
          //             }
          //         }
          //     }
          // });
        },
        fail: function (res) {
          console.log(res)

          reject(res)
          if (res.err_msg.indexOf('function not exist') > -1) {
            return alert('版本过低请升级')
          }
        },
      })
    })
    wx.error(function (res) {
      console.log(res)

      reject(res)
    })
  })
}
